package com.molichuxing.services.business.dto.response;

import com.molichuxing.framework.dto.ResponseRootDto;
import com.molichuxing.services.property.CarsTypeEnum;
import com.molichuxing.services.property.MaintenanceStatusEnum;
import com.molichuxing.services.property.MaintenanceTypeEnum;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 车辆表
 * </p>
 *
 * @author 
 * @since 2019-08-15
 */
@Data
public class MaintenanceBizDto extends ResponseRootDto {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Integer id;


    /**
     * 保养id
     */
    private Integer maintenanceId;

    /**
     * 车辆id
     */
    private Integer carId;

    /**
     * 车架号
     */
    private String vin;

    /**
     * 牌照号
     */
    private String licencePlate;

    /**
     * 车型id
     */
    private Integer vehicleId;

    /**
     * 车辆类型（0：新车，1：二手车）
     */
    private Integer vehicleType;

    /**
     * 车辆类型（0：新车，1：二手车）
     */
    private String vehicleTypeStr;


    /**
     * 应保养里程
     */
    private BigDecimal maintainableMileage;

    /**
     * 实际保养里程
     */
    private BigDecimal actualMaintainMileage;

    /**
     * 应保养日期
     */
    private LocalDateTime maintainableDate;

    /**
     * 实际保养日期
     */
    private LocalDate actualMaintainDate;

    /**
     * 状态（0：待审核，1：待保养，2：使用期，3：审核通过，4：审核驳回）
     */
    private Integer status;

    /**
     * 状态（0：待审核，1：待保养，2：使用期，3：审核通过，4：审核驳回）
     */
    private String statusStr;

    /**
     * 操作方（1：op，2：经销商）
     */
    private Integer operationType;

    /**
     * 操作方
     */
    private String operationId;


    /**
     * 采购日期
     */
    private LocalDateTime purchaseDate;

    /**
     * 提交时间
     */
    private LocalDateTime submitDate;

    /**
     * 采购日期
     */
    private LocalDateTime checkDate;

    /**
     * 已保养次数
     */
    private Integer count;

    /**
     * 车辆所在仓库
     */
    private Integer stockId;

    /**
     * 提交用户ID
     */
    private Integer submitMemberId;

    /**
     * 用户ID
     */
    private Integer userId;
    
    /**
     * 保养类型 1：A类，2：B类
     */
    private Integer type;

    /**
     * 保养类型 1：A类，2：B类
     */
    private String typeStr;
    
    /**
     * 保养门店名称
     */
    private String storeName;
    
    /**
     * 保养卡图片url
     */
    private String maintenanceUrl;

    /**
     * 结算单图片url
     */
    private List<String> settlementUrl;

    /**
     * 用户类型（1：op，2：用户）
     */
    @ApiModelProperty("用户类型")
    private Integer userType;

    public void setVehicleType(Integer vehicleType) {
        this.vehicleType = vehicleType;
        this.vehicleTypeStr = CarsTypeEnum.getName(vehicleType);
    }

    public void setStatus(Integer status) {
        this.status = status;
        this.statusStr = MaintenanceStatusEnum.getName(status);
    }
    
    public void setType(Integer type) {
        this.type = type;
        if(null != type) {
            this.typeStr = MaintenanceTypeEnum.getName(type);
        }
    }
}
